home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / exampleCode / irix / scripts / findlogins < prev    next >
Encoding:
Text File  |  1994-08-02  |  1.7 KB  |  81 lines

  1. #! /bin/csh -f
  2. #
  3. # findlogins    This script will scan /usr/adm/SYSLOG for every entry
  4. #        that is entered by 'login'.  It will keep track of
  5. #        each different user and count the number of times each
  6. #        has logged in.
  7. #
  8. # Synopsis:
  9. #    findlogins [<file>]
  10. #
  11. # Where:
  12. #    <file>    Optionally specifies the file to scan.
  13. #-----------------------------------------------------------------------
  14.  
  15. if ( "$1" == "" ) then
  16.     grep login /usr/adm/SYSLOG >/usr/tmp/logins
  17.     echo "END" >>/usr/tmp/logins
  18.     $0 recurs1 </usr/tmp/logins
  19.     rm /usr/tmp/logins
  20. else if ( "$1" == "recurs1" ) then
  21.     set users = ( )
  22.     set counts = ( )
  23.     set ases = ( )
  24.  
  25.     if ( -e ~/logins/.lasttime ) set do_time
  26.  
  27.     echo `date`
  28.     set noglob
  29.     while ( 1 )
  30.     set line = $<
  31.     if ( "$line" == "END" ) break
  32.  
  33.     set words = ( $line )
  34.  
  35.     if ( $?do_time ) then
  36.         set time1 = "$words[1-3]"
  37.         set time2 = "`gettime -m ~/logins/.lasttime '+%B %e %T'`"
  38.     endif
  39.  
  40.     set name = $words[6]
  41.     if ( "$name" == "failed:" ) then
  42.         echo $words[6-]
  43.         continue
  44.     endif
  45.     if ( "$words[7]" == "as" ) then
  46.         set as = $words[8]
  47.     else
  48.         set as = SELF
  49.     endif
  50.     @ pos = 1
  51.     foreach user ( $users )
  52.         if ( "$user" == "$name" ) then
  53.         if ( "$ases[$pos]" == "$as" ) then
  54.             @ cnt = $counts[$pos] + 1
  55.             set counts[$pos] = $cnt
  56.             break
  57.         endif
  58.         endif
  59.         @ pos = $pos + 1
  60.     end
  61.  
  62.     if ( $#users < $pos ) then
  63.         set users = ( $users $name )
  64.         set counts = ( $counts 1 )
  65.         set ases = ( $ases $as )
  66.     endif
  67.     end
  68.  
  69.     @ pos = 0
  70.     foreach user ( $users )
  71.     @ pos = $pos + 1
  72.     echo "$user as $ases[$pos] logged in $counts[$pos] times"
  73.     end
  74.     echo
  75. else
  76.     grep login $1 >/usr/tmp/logins
  77.     echo "END" >>/usr/tmp/logins
  78.     $0 recurs1 </usr/tmp/logins
  79.     rm /usr/tmp/logins
  80. endif
  81.